Enterprise data centres and server farms for web hosting typically comprise densely populated rack mounted servers, networking and/or storage fabrics and storage devices that are centrally and often remotely administered. Lowering the cost of ownership by providing space savings and remote administration, and reducing data centre downtime, are some of the primary objectives for such data centres. Many of the problems seen with storage and network configurations in these environments can be narrowed down to issues related to one or more layers of protocols, including, but not limited to, corruption of protocol headers and/or data. The debugging and root cause analysis of certain classes of these problems, such as connectivity, performance and so on, usually require administrators or support personnel to see the input/output (I/O) messages exactly as they are transmitted or received on the external medium of the I/O device connected to an end node, for example a server. The ability to trace I/O helps administrators and support personnel in debugging protocol issues relating to storage, networking, or any remote communication mechanisms, for example, remote direct memory access (RDMA), that usually result in end node or application downtime for the customer's data centre.
In addition to administration and support requirements, customer demands on server performance are ever increasing. However, certain technologies used to increase server performance conflict with the I/O tracing techniques referred to above. One such performance increasing technique is known as protocol offload. I/O devices commonly provide partial or full offload of one or more protocols to conserve server resources and to improve overall server performance and application responsiveness. Essentially, protocol offload achieves this by removing from the server CPU the onerous protocol processing requirements involved with, for example, TCP/IP based applications. Instead, the processing is carried out by the I/O device, for example a network interface card/adapter, core I/O device implementation (LAN-on-motherboard) or a storage adapter. The TCP/IP protocol stack is therefore effectively transferred from the end node to the I/O device. In the case of full protocol offload, all of the packet protocol layer headers are stripped off at the I/O device and only the data needed by the user or kernel application is transferred to the end node.
The problem with this approach in the context of I/O tracing is that some or all of the protocol information is not then available to the end node, making I/O tracing extremely difficult.